From 698cbee1fbe3e8d30c20effe3de14bca13fa4fec Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 21 Oct 2020 15:16:54 +0100 Subject: [PATCH] a11y: Move ChildrenChanged emitter to ATSPI utilities We are going to use it from GtkAtSpiRoot, which is not a GtkAtSpiContext. --- gtk/a11y/gtkatspicontext.c | 32 +++++++------------------------ gtk/a11y/gtkatspiutils.c | 34 +++++++++++++++++++++++++++++++++ gtk/a11y/gtkatspiutilsprivate.h | 8 ++++++++ 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/gtk/a11y/gtkatspicontext.c b/gtk/a11y/gtkatspicontext.c index b5ff4cbbc5..a3b5d8bb22 100644 --- a/gtk/a11y/gtkatspicontext.c +++ b/gtk/a11y/gtkatspicontext.c @@ -816,33 +816,15 @@ emit_children_changed (GtkAtSpiContext *self, int idx, GtkAccessibleChildState state) { - const char *change; - - switch (state) - { - case GTK_ACCESSIBLE_CHILD_STATE_ADDED: - change = "add"; - break; - - case GTK_ACCESSIBLE_CHILD_STATE_REMOVED: - change = "remove"; - break; - - default: - g_assert_not_reached (); - return; - } - - GVariant *ref = gtk_at_spi_context_to_ref (child_context); + GVariant *child_ref = gtk_at_spi_context_to_ref (child_context); GVariant *context_ref = gtk_at_spi_context_to_ref (self); - g_dbus_connection_emit_signal (self->connection, - NULL, - self->context_path, - "org.a11y.atspi.Event.Object", - "ChildrenChanged", - g_variant_new ("(siiv@(so))", change, idx, 0, ref, context_ref), - NULL); + gtk_at_spi_emit_children_changed (self->connection, + self->context_path, + state, + idx, + child_ref, + context_ref); } static void diff --git a/gtk/a11y/gtkatspiutils.c b/gtk/a11y/gtkatspiutils.c index 1fef628144..fad5ee10fd 100644 --- a/gtk/a11y/gtkatspiutils.c +++ b/gtk/a11y/gtkatspiutils.c @@ -305,3 +305,37 @@ gtk_at_spi_null_ref (void) { return g_variant_new ("(so)", "", "/org/a11y/atspi/null"); } + +void +gtk_at_spi_emit_children_changed (GDBusConnection *connection, + const char *path, + GtkAccessibleChildState state, + int idx, + GVariant *child_ref, + GVariant *sender_ref) +{ + const char *change; + + switch (state) + { + case GTK_ACCESSIBLE_CHILD_STATE_ADDED: + change = "add"; + break; + + case GTK_ACCESSIBLE_CHILD_STATE_REMOVED: + change = "remove"; + break; + + default: + g_assert_not_reached (); + return; + } + + g_dbus_connection_emit_signal (connection, + NULL, + path, + "org.a11y.atspi.Event.Object", + "ChildrenChanged", + g_variant_new ("(siiv@(so))", change, idx, 0, child_ref, sender_ref), + NULL); +} diff --git a/gtk/a11y/gtkatspiutilsprivate.h b/gtk/a11y/gtkatspiutilsprivate.h index 20b0b09305..d54f5896c7 100644 --- a/gtk/a11y/gtkatspiutilsprivate.h +++ b/gtk/a11y/gtkatspiutilsprivate.h @@ -31,4 +31,12 @@ gtk_atspi_role_for_context (GtkATContext *context); GVariant * gtk_at_spi_null_ref (void); +void +gtk_at_spi_emit_children_changed (GDBusConnection *connection, + const char *path, + GtkAccessibleChildState state, + int idx, + GVariant *child_ref, + GVariant *sender_ref); + G_END_DECLS -- 2.30.2